Profile picture

[기술부채] 우테코 5기 레벨3 - 6주차

Amaranth2023년 08월 30일

✅htop

: Linux 시스템 실시간 모니터링 프로그램

top에서 업그레이드된 툴로, top은 하나의 코어를 하나의 cpu로 계산하지만 htop은 코어 개수를 확인해서 각 프로세스 정보를 더 디테일하게 모니터링한다.

✅동시성 이슈

동일한 하나의 데이터에 2개 이상의 스레드 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타날 수 있는 문제.

동시성 이슈의 문제점은 다음과 같다.

  1. 공유 데이터에 대해 예상 결과와 다른 결과가 나옴에도 오류가 발생하지 않기 때문에 즉각적으로 알아차리기 어렵다.
  2. 비정형적으로 발생하기 때문에 디버깅이 어렵다.
  3. 로컬 개발 환경에서는 파악하기 어렵다.

이를 해결하기 위한 핵심 아이디어는 가변 데이터에 순차적으로 접근할 수 있게 하는 것.

  • 해결 방법
    • 메서드에 synchronized 키워드를 사용하면 해결할 수 있지 않을까? synchronized는 하나의 프로세스 안에서만 보장이 되기 때문에, 서버가 1대일 때는 문제가 없지만 서버가 2대 이상인 경우 데이터에 대한 접근을 막을 수 없다.

    • Database의 Lock을 활용해보자

      • 비관적 락 - 데이터에 배타적 잠금을 걸어주면, 다른 트랜잭션에서는 lock이 해제되기 전까지는 데이터를 가져갈 수 없게 된다.

        ⇒ 데드락의 위험성이 있으므로 주의하며 사용해야 한다.

      • 낙관적 락 - 버전을 이용해 정합성을 맞춘다. 데이터를 읽고 update를 수행하기 전에 내가 읽은 버전과 일치하는지 확인하고 업데이트를 한다.

[Spring & Java] 🚀 재고시스템으로 알아보는 동시성이슈 해결방법

✅@Transient

@Transient
private Integer temp;

DB 테이블과 매핑되지 않는 필드를 명시할 때 사용한다.

객체에 임시로 어떤 값을 보관하고 싶을 때 사용한다.


Loading script...